#ifndef SPRITEFACTORY_H
#define SPRITEFACTORY_H

#include "Tank.h"
#include "ComputerTank.h"
#include "PlayerTank.h"
#include "Terrain.h"
#include "Treasure.h"
#include "GrenadeTreasure.h"
#include "TankShell.h"
#include "OrdinaryTankShell.h"
#include <list>

class SpriteFactory
{
    public:
        SpriteFactory();
        virtual ~SpriteFactory();

        int getSId();

        CSprite *getCSprite(int sId,int tId);       //获取精灵对外的方法,根据不同的sId去调用不同的精灵生产方
        ComputerTank *getComputerTank(int tId);     //根据不同的tId去生产不同的电脑坦克
        PlayerTank* getPlayerTank(int tId);     // 生产玩家坦克
        Terrain *getTerrain(int tId);       //根据不同的tId去生产不同的地形
        Treasure *getTreasure(int tId);     //根据不同的tId去生产不同的宝物
        TankShell *getTankShell(int tId,float InitX, float InitY);       //根据不同的tId去生产不同的坦克炮弹

    protected:

    private:
        static int sId;     //精灵在克隆时名称后面加的编号，防止精灵名重复
        //sId未赋值，编译系统自动赋初值0

};

#endif // SPRITEFACTORY_H
